package com.sky.service;

import com.sky.dto.OrdersSubmitDTO;
import com.sky.result.PageResult;
import com.sky.vo.*;

import java.time.LocalDate;

/**
 * @author iTaotao
 * @version 1.0
 * @Description
 * @createTime 2023年08月03日 14:15:00
 */
public interface OrderService {
    /**
     * 催单
     *
     * @param id id
     */
    void reminder(Long id);

    /**
     * 提交订单
     *
     * @param ordersSubmitDTO 订单提交dto
     * @return {@link OrderSubmitVO}
     */
    OrderSubmitVO submit(OrdersSubmitDTO ordersSubmitDTO);

    /**
     * 再来一单
     *
     * @param id id
     */
    void repetitionAgain(Long id);

    /**
     * 历史订单
     *
     * @param
     * @return {@link PageResult}
     */
    PageResult page(Integer page , Integer pageSize , Integer status);

    /**
     * 取消订单
     *
     * @param id id
     */
    void cancelReminder(Long id);

    /**
     * 付款通知
     *
     * @param number 数量
     */
    void payNotification(String number);

    /**
     * 根据id查询订单
     *
     * @param id id
     * @return
     */
    OrderVO selectOderById(Long id);

    /**
     * 选择营业额统计
     *
     * @param begin 开始
     * @param end   结束
     * @return {@link TurnoverReportVO}
     */
    TurnoverReportVO selectTurnoverStatistics(LocalDate begin, LocalDate end);

    /**
     * 用户数据
     *
     * @param begin 开始
     * @param end   结束
     * @return {@link UserReportVO}
     */
    UserReportVO userStatistics(LocalDate begin, LocalDate end);

    /**
     * 订单统计信息
     *
     * @param begin 开始
     * @param end   结束
     * @return {@link OrderReportVO}
     */
    OrderReportVO ordersStatistics(LocalDate begin, LocalDate end);

    /**
     * 全球
     *
     * @param begin 开始
     * @param end   结束
     * @return {@link SalesTop10ReportVO}
     */
    SalesTop10ReportVO top10(LocalDate begin, LocalDate end);
}
